package com.yex.service.impl;

import com.baomidou.mybatisplus.plugins.Page;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import com.yex.common.utils.PageUtils;
import com.yex.dao.NoticeDao;
import com.yex.entity.NoticeEntity;
import com.yex.entity.NoticeUserEntity;
import com.yex.service.LocaleMessageSourceService;
import com.yex.service.NoticeService;
import com.yex.service.NoticeUserService;
import com.yex.utils.JsonResultVo;
import com.yex.utils.Query;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.HashMap;
import java.util.List;
import java.util.Map;


@Service("noticeService")
public class NoticeServiceImpl extends ServiceImpl<NoticeDao, NoticeEntity> implements NoticeService {
    @Autowired
    private NoticeUserService noticeUserService;
    @Autowired
    private LocaleMessageSourceService message;

    @Override
    public PageUtils queryPage(Map<String, Object> params, String filter) {
        Page<NoticeEntity> page = new Query<NoticeEntity>(params).getPage();
        List<NoticeEntity> noticeEntityList = baseMapper.selectPageFilter(page, filter);
        page.setRecords(noticeEntityList);
        return new PageUtils(page);
    }

    @Override
    public JsonResultVo selectNoticeList(Integer userId) {
        Map<String, Object> map = new HashMap<>(2);
        map.put("status", "1");
        map.put("type", "1");
        List<NoticeEntity> noticeEntityList = baseMapper.selectByMap(map);
        for (NoticeEntity noticeEntity : noticeEntityList) {
            NoticeUserEntity noticeUserEntity = noticeUserService.selectNoticeUser(noticeEntity.getId().toString(), userId);
            noticeEntity.setStatus(1);
            if (noticeUserEntity == null) {
                noticeEntity.setStatus(0);
            }
        }
        map.put("type", "2");
        List<NoticeEntity> noticeEntityList1 = baseMapper.selectByMap(map);
        for (NoticeEntity noticeEntity : noticeEntityList1) {
            NoticeUserEntity noticeUserEntity = noticeUserService.selectNoticeUser(noticeEntity.getId().toString(), userId);
            noticeEntity.setStatus(0);
            if (noticeUserEntity != null) {
                noticeEntity.setStatus(1);
            }
        }
        Map<String, List<NoticeEntity>> noticeListMap = new HashMap<>(2);
        noticeListMap.put("official", noticeEntityList);
        noticeListMap.put("application", noticeEntityList1);
        return new JsonResultVo(message.getMessage("success"), noticeListMap, 0);
    }
}
